#include "ct_config.h"
#include "ct_isr.h"
#include "ct_head.h"

volatile uint16_t ct_tickTimeRef = 0;

#if 0
InterruptHandlers_t handlers;


void registerUartHandler(InterruptHandler handler) {
    handlers.uart0Handler = handler;
}

void registerTimer0Handler(InterruptHandler handler) {
    handlers.timer0Handler = handler;
}

// void registerTimer1Handler(InterruptHandler handler) {
//     handlers.timer1Handler = handler;
// }

// void registerTimer2Handler(InterruptHandler handler) {
//     handlers.timer2Handler = handler;
// }
#endif

//-----------------------------------------------------------------------------------------------------------
// void INT0_ISR(void) interrupt 0    // Vector @  0x03
// {
//     SFRS_TMP = SFRS;

//     clr_TCON_IE0;

//     if (SFRS_TMP) /* for SFRS page */
//     {
//         ENABLE_SFR_PAGE1;
//     }
// }
//-----------------------------------------------------------------------------------------------------------

#if defined __C51__
void        Timer0_ISR(void) interrupt 1    // vector=0x0B

#elif defined __ICC8051__
#pragma vector = 0x0B    // Interrupt 1
__interrupt void Timer0_ISR(void)

#elif defined __SDCC__
void Timer0_ISR(void) __interrupt(1)    // vector=0x0B
#endif
{
    SFRS_TMP = SFRS;
    // 1ms timed

    ct_IncTick();
    ct_timer0_load(65535 - 1999);    // 0xC010
                                     //    TH0 = (65535 - 1950) >> 8;
                                     //    TL0 = (65535 - 1950);
    //    if(handlers.timer0Handler) {
    //        handlers.timer0Handler();
    //    }
    clr_TCON_TF0;
    if (SFRS_TMP) /* for SFRS page */
    {
        ENABLE_SFR_PAGE1;
    }
}
//-----------------------------------------------------------------------------------------------------------
// void INT1_ISR(void) interrupt 2    // Vector @  0x13
// {
//     SFRS_TMP = SFRS;

//     clr_TCON_IE1;

//     if (SFRS_TMP) /* for SFRS page */
//     {
//         ENABLE_SFR_PAGE1;
//     }
// }
//-----------------------------------------------------------------------------------------------------------
// void Timer1_ISR(void) interrupt 3    // Vector @  0x1B
// {
//     SFRS_TMP = SFRS;

//     //    if(handlers.timer1Handler) {
//     //        handlers.timer1Handler();
//     //    }
//     clr_TCON_TF1;

//     if (SFRS_TMP) /* for SFRS page */
//     {
//         ENABLE_SFR_PAGE1;
//     }
// }
//-----------------------------------------------------------------------------------------------------------
// void UART0_ISR(void) interrupt 4    // Vector @  0x23
// {
//     SFRS_TMP = SFRS;
//     if (RI) {
//         //         if(handlers.uartHandler) {
//         //            handlers.uartHandler();
//         //        }
//         uart0_receive_flag = 1;
//         uart0_receive_data = SBUF;
//         clr_SCON_RI;    // Clear RI (Receive Interrupt).
//     }
//     if (TI) {
//         //        if (!UART0PRINTFG)
//         //            TI = 0;
//     }
//     //    clr_SCON_RI;
//     //    clr_SCON_TI;
//     if (SFRS_TMP) /* for SFRS page */
//     {
//         ENABLE_SFR_PAGE1;
//     }
// }
//-----------------------------------------------------------------------------------------------------------
// void Timer2_ISR(void) interrupt 5    // Vector @  0x2B
//{
//    SFRS_TMP = SFRS;

//    //    if(handlers.timer2Handler) {
//    //        handlers.timer2Handler();
//    //    }
//    clr_T2CON_TF2;
//    if (SFRS_TMP) /* for SFRS page */
//    {
//        ENABLE_SFR_PAGE1;
//    }
//}
////-----------------------------------------------------------------------------------------------------------
// void I2C_ISR(void) interrupt 6    // Vector @  0x33
//{
//     SFRS_TMP = SFRS;

//    clr_I2CON_SI;

//    if (SFRS_TMP) /* for SFRS page */
//    {
//        ENABLE_SFR_PAGE1;
//    }
//}
////-----------------------------------------------------------------------------------------------------------
// void Pin_INT_ISR(void) interrupt 7    // Vector @  0x3B
//{
//     SFRS_TMP = SFRS;

//    PIF = 0;

//    if (SFRS_TMP) /* for SFRS page */
//    {
//        ENABLE_SFR_PAGE1;
//    }
//}
//-----------------------------------------------------------------------------------------------------------
// void UART1_ISR (void) interrupt 15          // Vector @  0x7B
//{
//     SFRS_TMP = SFRS;
//    if (RI_1)
//    {
//        uart1_receive_flag = 1;
//        uart1_receive_data = SBUF1;
//        RI_1=0;                             /* clear reception flag for next reception */
//    }
//    if (TI_1)
////        if (!UART1PRINTFG)
////            TI_1 = 0;                       /* if emission occur */
////    clr_S1CON_RI_1;
////    clr_S1CON_TI_1;
//     if (SFRS_TMP)                 /* for SFRS page */
// {
//     ENABLE_SFR_PAGE1;
// }
//}

// void ADC_ISR(void) interrupt 11 {
//     SFRS_TMP = SFRS;

//     clr_ADCCON0_ADCF;
//     //  ADC_CONT_FINAL_FLAG = 1;

//     if (SFRS_TMP) /* for SFRS page */
//     {
//         ENABLE_SFR_PAGE1;
//     }
// }

// void RTC_ISR(void) interrupt 30    // Vector @  0xF3
// {
//     SFRS_TMP = SFRS;

//     clr_RTCINTSTS_ALMIF;
//     clr_RTCINTSTS_TICKIF;

//     if (SFRS_TMP) /* for SFRS page */
//     {
//         ENABLE_SFR_PAGE1;
//     }
// }
